package client;
/*
 * Input - Parameter - Beispiele
 * -ORBInitialPort 3333 -ORBInitialHost localhost koordi quit
 */

import org.omg.CORBA.ORB;
import org.omg.CosNaming.NamingContextExt;
import org.omg.CosNaming.NamingContextExtHelper;

import ggt.Koordinator;
import ggt.KoordinatorHelper;
import ggt.Starter;

public class Cient {

	private static Koordinator koordinator = null;
	
	public static void main(String[] args) {
		koordinator = verbinden(args);
		
		if(args[5].equals("quit")){
			koordinator.quit();
		} else if (args[5].equals("Starterliste")){
			starterliste();
		} else if (args[5].equals("Berechnung")){
			berechnung(Integer.parseInt(args[6]),  Integer.parseInt(args[7]),
					   Integer.parseInt(args[8]),  Integer.parseInt(args[9]),
					   Integer.parseInt(args[10]), Integer.parseInt(args[11]));
		} else if (args[5].equals("Demo")){
			demoBerechnung();
		} else { System.out.println(args[5]+ " Befehl unbekannt!"); }

	}
	
	private static void berechnung(int minProzesse, int maxProzesse, int minDelay, int maxDelay, int timeout, int ggt){
		koordinator.berechnungStarten(minProzesse, maxProzesse, minDelay, maxDelay, timeout, ggt);
	}
	
	private static void demoBerechnung(){
		int minProzesse = 3;
		int maxProzesse = 7;
		int minDelay = 1000;
		int maxDelay = 2500;
		int timeout = 5000;
		int ggt = 127;
		
		berechnung(minProzesse, maxProzesse, minDelay, maxDelay, timeout, ggt );
	}
	
	private static Koordinator verbinden(String[] args){
		Koordinator koordinator = null;
		
		try {	
			ORB orb = ORB.init(args, null);
			NamingContextExt nc = NamingContextExtHelper.narrow(orb.resolve_initial_references("NameService"));
			org.omg.CORBA.Object obj = nc.resolve_str(args[4]);
			koordinator = KoordinatorHelper.narrow(obj);
		} catch (Exception ex) {
			System.err.print("===>" + ex.toString());
			System.exit(1); 
		}
		return koordinator;
	}
	
	private static void starterliste(){
		Starter starterliste[] = koordinator.holestarterListe();
		
		if (starterliste == null){
			System.out.println("Keine Starter vorhanen");
		} else {
			System.out.println("Bekannte Starter: " + starterliste.length);
			for (int i=0; i < starterliste.length; i++){
				System.out.println(i +": "+ starterliste[i].name());
			}
		}		
	}

}
